# 导入自然语言处理相关库
import nltk                           # 自然语言处理工具包
from nltk.tokenize import word_tokenize  # 分词工具
from nltk.corpus import stopwords        # 停用词库
from collections import Counter          # 计数器工具
import string                            # 字符串处理模块

# 下载必要资源（首次运行时取消注释）
# nltk.download('punkt')      # 下载分词器数据
# nltk.download('stopwords')  # 下载停用词数据

def preprocess_text(text):
    """文本预处理函数 - 清理和标准化文本数据"""
    # 转换为小写并进行分词处理
    tokens = word_tokenize(text.lower())

    # 移除标点符号和停用词，只保留字母单词
    stop_words = set(stopwords.words('english'))  # 获取英语停用词集合
    filtered_tokens = [
        word for word in tokens
        # 过滤条件：不是标点符号、不是停用词、且是字母组成的单词
        if word not in string.punctuation and word not in stop_words and word.isalpha()
    ]

    return filtered_tokens  # 返回处理后的词汇列表

def analyze_text():
    """文本分析示例 - 展示NLP基本分析流程"""
    # 示例文本 - 关于自然语言处理的介绍
    text = """
    Natural language processing (NLP) is a fascinating field of artificial intelligence. 
    It combines computational linguistics with machine learning and deep learning models. 
    NLP enables computers to understand, interpret, and generate human language in a valuable way.
    Applications of NLP include machine translation, sentiment analysis, and chatbots.
    """

    print("=== 原始文本 ===")
    print(text.strip())  # 打印原始文本并去除首尾空白

    # 对文本进行预处理
    processed_tokens = preprocess_text(text)

    print(f"\n=== 处理后词汇 (共{len(processed_tokens)}个) ===")
    print(processed_tokens)  # 显示处理后的词汇列表

    # 统计词频 - 找出出现频率最高的词汇
    word_freq = Counter(processed_tokens)
    print(f"\n=== 词频统计 (前5个) ===")
    # 显示频率最高的5个词及其出现次数
    for word, freq in word_freq.most_common(5):
        print(f"{word}: {freq}")

    # 文本基本信息统计
    print(f"\n=== 文本统计 ===")
    print(f"总词数: {len(processed_tokens)}")                    # 处理后总词数
    print(f"唯一词数: {len(set(processed_tokens))}")             # 不重复词的数量
    print(f"词汇丰富度: {len(set(processed_tokens))/len(processed_tokens):.2f}")  # 词汇多样性指标

# 程序入口点
if __name__ == "__main__":
    analyze_text()
